package com.lry.basic.algorithm.simple;

import java.util.HashMap;
import java.util.Map;

/**
 * @author:刘仁有
 * @desc: 罗马数字转整数
 * @email:953506233@qq.com
 * @data:2020/1/3
 */
public class RomanToInt {
    public static void main(String[] args) {
        System.out.println(romanToInt("IV"));
    }
    private static int romanToInt(String s){
        if(null==s||"".equals(s)){
            return 0;
        }
        Map<Character,Integer> map = new HashMap<>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
        char[] cs = s.toCharArray();
        int num = 0;
        num+=map.get(cs[0]);
        char tmp = cs[0];
        for (int i=1;i<cs.length;i++) {
            num+=map.get(cs[i]);
            if(tmp=='I'&&(cs[i]=='V'||cs[i]=='X')){
                num-=2;
            }
            if(tmp=='X'&&(cs[i]=='L'||cs[i]=='C')){
                num-=20;
            }
            if(tmp=='C'&&(cs[i]=='D'||cs[i]=='M')){
                num-=200;
            }
            tmp = cs[i];
        }
        return num;
    }
}

//    bool isPalindrome(int x){
//        long f=0;
//        int temp=x;
//        for(;x;f=f*10+x%10,x/=10);
//        if(temp==f&&temp>=0)
//            return true;
//        else
//            return false;
//    }
